#ifndef SHCO_SURFACE_H
#define SHCO_SURFACE_H

#include "disp.h"
#include "../geom/geom.h"
#include "../global.h"
#include "tool/defines.h"

namespace ShCo
{

class InputManager;
class ObjectManager;
class SurfaceImpl;
class CORESHARED_EXPORT Surface
{
public:
    Surface();
    virtual ~Surface();

    InputManager* inputManager() const;
    ObjectManager* objectManager() const;

    void event(const SsUiEvent*);

    virtual void setAttribute(const SsWireAt*) = 0;
    virtual const SsWireAt* attribute() const = 0;

    virtual void drawCurve(const SsCurve*) = 0;
    virtual void drawLine(const SsLine*) = 0;
    virtual void drawPoint(const SsPoint*) = 0;

private:
    SH_DISABLE_COPY(Surface);
    SH_DECLARE_IMPL(Surface);
};

} // namespace ShCo
#endif // SHCO_SURFACE_H
